﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Studio7i.Dominio;
using Studio7i.Persistencia;

namespace Studio7i.Negocio
{
    public class ReservaServiceImpl:IReservaService
    {
        #region Dependencias
        IReserva reservaDAO = null;
        //ISalaDAO salaDAO = null;
        #endregion

        #region Operaciones de negocio
        //public Sala InscribirSala(string nombre, int localCodigo,
        //    int capacidad, string caracteristicas)
        //{
        //    // Excepción si falta algún dato requerido
        //    if (nombre == null || localCodigo == 0 ||
        //        capacidad == 0 || caracteristicas == null)
        //        throw new DatosInsuficientesException("Faltan datos para crear la sala");
        //    // Excepción si ya se registró la misma sala (por nombre y código de local)
        //    Reserva localExistente = reservaDAO.Obtener(localCodigo);
        //    ICollection<Sala> salasEncontradas = salaDAO.ListarXBusqueda(
        //        null, nombre, null, null, localExistente, null);
        //    if (salasEncontradas.Count > 0)
        //        throw new EntidadRepetidaException("La sala ya existe");
        //    // Creación de la sala
        //    Sala salaACrear = new Sala();
        //    salaACrear.Nombre = nombre;
        //    salaACrear.Reserva = localExistente;
        //    salaACrear.Capacidad = capacidad;
        //    salaACrear.Caracteristicas = caracteristicas;
        //    return salaDAO.Crear(salaACrear);
        //}
        #endregion

        #region Métodos de soporte para entidad Reserva
        public Reserva CrearReserva(Reserva reservaACrear)
        {
            //ICollection<Reserva> existentes = reservaDAO.ListarXNombre(reservaACrear.Nombre);
            //if (existentes.Count > 0)
            //    throw new EntidadRepetidaException("Reserva ya existente");
            return reservaDAO.Crear(reservaACrear);
        }
        public Reserva ObtenerReserva(int codigo)
        {
            return reservaDAO.Obtener(codigo);
        }
        public Reserva ModificarReserva(Reserva reservaAModificar)
        {
            return reservaDAO.Modificar(reservaAModificar);
        }
        public void EliminarReserva(Reserva reservaAEliminar)
        {
            reservaDAO.Eliminar(reservaAEliminar);
        }
        public ICollection<Reserva> ListarReservas()
        {
            return reservaDAO.ListarTodos();
        }
        //public ICollection<Reserva> ListarLocalesXNombre(string nombre)
        //{
        //    return reservaDAO.ListarXNombre(nombre);
        //}
        #endregion

    }
}